<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 正则表达式
    // 按照既定的规则,匹配字符串  => 常用于做表单校验和字符串匹配

    // 语法: 正则.方法()  


    // test()  用正则表达式检索字符串,判断字符串中是否存在符合规则的字符  => 返回值:存在就返回true,不存在就返回false
    // 注意:
    // 如果不添加修饰符g, 默认从字符串开头匹配
    // 如果添加了修饰符g, 全局匹配(匹配整个字符串) => 默认从字符串开头匹配一次,如果存在符合规则的字符串,返回true,并记录下一次查询的起始位置(reg.lastIndex => 本次匹配字符位置的后一位), 下次再调用test()方法,从reg.lastIndex记录位置开始继续向后匹配,以此类推,最终匹配不到返回false,并将reg.lastIndex重置为0

    // var str = "good good study , Day dAy up";
    // var reg = /day/; // day
    // console.log(reg.test(str));

    // var str = "good good study , Day dAy up";
    // var reg = /day/i; // 忽略大小写 D|d  A|a  Y|y  => 8种
    // console.log(reg.test(str));  //只要字符串中存在正则表达式匹配模式中的任意一种即可  


    // 如果不添加修饰符g, 默认从字符串开头匹配
    // var str = "good good study , Day dAy up";
    // var reg = /day/i; // 忽略大小写 D|d  A|a  Y|y  => 8种
    // console.log(reg.test(str)); 
    // console.log(reg.test(str)); 
    // console.log(reg.test(str)); 
    // console.log(reg.test(str)); 
    // console.log(reg.test(str)); 
    // console.log(reg.test(str)); 


    // var str = "good good study , Day dAy up";
    // var reg = /day/ig; // 忽略大小写 D|d  A|a  Y|y  => 8种
    // console.log(reg.lastIndex); // 0
    // console.log(reg.test(str),reg.lastIndex); // true  21 
    // console.log(reg.test(str),reg.lastIndex); // true  25
    // console.log(reg.test(str),reg.lastIndex); // false 0
    // console.log(reg.test(str),reg.lastIndex); 
    // console.log(reg.test(str),reg.lastIndex); 
    // console.log(reg.test(str),reg.lastIndex); 
    // console.log(reg.test(str),reg.lastIndex); 
    // console.log(reg.test(str),reg.lastIndex); 
    // console.log(reg.test(str),reg.lastIndex); 

    // day再字符串中出现几次
    // var str = "good good study , Day dAy day day day day ";
    // var reg = /day/ig; // 忽略大小写 D|d  A|a  Y|y  => 8种

    // var count = 0;
    // while(reg.test(str)){
    //     count++;
    // }
    // console.log("count",count);



    // exec()  用正则表达式检索字符串,将符合规则的内容提取出来放到数组中(匹配一次)  => 返回值:存在就返回数组,不存在就返回null
    // 注意:
    // 如果不添加修饰符g, 默认从字符串开头匹配
    // 如果添加了修饰符g, 全局匹配(匹配整个字符串) => 默认从字符串开头匹配一次,如果存在符合规则的字符串,提取出来放到数组中返回,并记录下一次查询的起始位置(reg.lastIndex => 本次匹配字符位置的后一位), exec()方法,从reg.lastIndex记录位置开始继续向后匹配,以此类推,最终匹配不到返回null,并将reg.lastIndex重置为0

    // var str = "good good study , Day dAy up";
    // var reg = /day/; // day
    // console.log(reg.exec(str)); // null

    // var str = "good good study , Day dAy up";
    // var reg = /day/i; // 忽略大小写 D|d  A|a  Y|y  => 8种
    // console.log(reg.exec(str));  //只要字符串中存在正则表达式匹配模式中的任意一种即可  


    // 如果不添加修饰符g, 默认从字符串开头匹配一次
    // var str = "good good study , Day dAy up";
    // var reg = /day/i; // 忽略大小写 D|d  A|a  Y|y  => 8种
    // console.log(reg.exec(str)); 
    // console.log(reg.exec(str)); 
    // console.log(reg.exec(str)); 
    // console.log(reg.exec(str)); 
    // console.log(reg.exec(str)); 
    // console.log(reg.exec(str)); 

    // var str = "good good study , Day dAy up";
    // var reg = /day/ig; // 忽略大小写 D|d  A|a  Y|y  => 8种
    // console.log(reg.lastIndex); // 0
    // console.log(reg.exec(str),reg.lastIndex); // ["Day"]  21 
    // console.log(reg.exec(str),reg.lastIndex); // ["dAy"]  25
    // console.log(reg.exec(str),reg.lastIndex); // null 0
    // console.log(reg.exec(str),reg.lastIndex); 
    // console.log(reg.exec(str),reg.lastIndex); 
    // console.log(reg.exec(str),reg.lastIndex); 
    // console.log(reg.exec(str),reg.lastIndex); 
    // console.log(reg.exec(str),reg.lastIndex); 
    // console.log(reg.exec(str),reg.lastIndex); 



    // 模拟match 
    // 去除字符串中的所有day

    var str = "good good study , Day dAy day day day day up";
    var reg = /day/ig; 
    var list = []; 

    var result = null;
    while(result = reg.exec(str)){ // 调用依次exec()方法,将结果赋值给变量result, 并将result作为循环的表达式
        list.push(result[0]);
    }
    console.log("list",list);



  

</script>
</html>